`of` を null 非許容の戻り値に移行し、`maybeOf` を追加します
まとめ
この移行ガイドでは、さまざまな静的コードを使用するコードの変換について説明します。of
null 許容値を返すために使用されていたコンテキストから情報を取得する関数
値を返しますが、Null 非許容値を返すようになりました。
コンテクスト
Flutter には、いくつかのタイプのウィジェットのルックアップを可能にする共通のパターンがあります。
(通常InheritedWidget
s、ただし他も) 静的メンバーを使用
通常呼び出される関数of
。
null 非許容性がデフォルトになったときは、
最も一般的に使用される API は、NULL 非許容値を返します。こう言うからですScrollable.of(context)
そしてまだ必要です!
オペレーターまたは?
そして
その呼び出し後のフォールバック値はぎこちなく感じられ、慣用的ではありませんでした
null 非許容の Dart コード。
この移行の多くは、私たちが排除したときに実行されました。nullOk
パラメータ
ある以前の移行、 しかし、いくつかのof
その移行ではメソッドが欠落していましたが、
そして、一部はその後、私たちのやり方に反して、null 許容の戻り値の型を追加しました。
よくあるパターン。
この移行では、影響を受けるof
アクセサーは 2 つの呼び出しに分割されました。
これは、null 非許容値を返し、要求されたときに例外をスローしました。
値が存在しませんでした (まだ呼び出されています)of
)、および null 許容値を返したもの
例外をスローしなかった値。例外がスローされなかった場合は null を返します。
present (と呼ばれる新しいメソッドmaybeOf
)。
変更内容の説明
この変更により、これらの静的ファイルが変更されましたof
Null 非許容値を返す API。
値が見つからない場合も、デバッグ モードでアサートされます。
リリースモードで例外をスローします。
AutofillGroup.of
DefaultTabController.of
DefaultTextHeightBehavior.of
Form.of
HeroControllerScope.of
Material.of
Overlay.of
PageStorage.of
PrimaryScrollController.of
RenderAbstractViewport.of
RestorationScope.of
Scrollable.of
ScrollNotificationObserver.of
この変更により、新しい静的機能も導入されました。maybeOf
API の併用
上記の関数は、同じ値の null 許容バージョンを返します。
値が見つからない場合は、例外をスローせずに単純に null を返します。
AutofillGroup.maybeOf
DefaultTabController.maybeOf
DefaultTextHeightBehavior.maybeOf
Form.maybeOf
HeroControllerScope.maybeOf
Material.maybeOf
Overlay.maybeOf
PageStorage.maybeOf
PrimaryScrollController.maybeOf
RenderAbstractViewport.maybeOf
RestorationScope.maybeOf
Scrollable.maybeOf
ScrollNotificationObserver.maybeOf
移行ガイド
新しい形式の API を使用するようにコードを変更するには、まずすべての API を変換します。
元の静的インスタンスof
関数 (null 可能性は
重要)maybeOf
代わりにフォームを作成します。
移行前のコード:
ScrollController? controller = Scrollable.of(context);
移行後のコード:
ScrollController? controller = Scrollable.maybeOf(context);
次に、コードがof
APIに続いて
感嘆符の場合は、感嘆符を削除するだけです。
null 許容値を返さなくなりました。
移行前のコード:
ScrollController controller = Scrollable.of(context)!;
移行後のコード:
ScrollController controller = Scrollable.of(context);
以下のことも役立ちます。
-
unnecessary_non_null_assertion
(リンターメッセージ) を識別します ある場所!
オペレーターは削除されるべきです -
unnecessary_null_checks
(分析オプション) 場所を特定します どこ?
オペレーターは必要ありません -
unnecessary_null_in_if_null_operators
場所を特定する ここで??
オペレーターは必要ありません -
unnecessary_nullable_for_final_variable_declarations
(分析オプション) 不要な疑問符演算子を見つけますfinal
とconst
変数
タイムライン
安定版リリース: 3.7
参考文献
API ドキュメント:
Material.of
関連する PR:
- 追加
maybeOf
すべての場合において、of
null 許容値を返します - 追加
Overlay.maybeOf
、 作るOverlay.of
null 非許容インスタンスを返す